<?php
$isAdmin	= $_SESSION[SESSION_PERFIL_FUNC] == PERFIL_ADMINISTRADOR; 
$isDiretor	= $_SESSION[SESSION_CARGO_FUNC]== CargoModel::COD_DIRETOR;
$isGerente  	= $_SESSION[SESSION_CARGO_FUNC] == CargoModel::COD_GERENTE || $_SESSION[SESSION_PERFIL_FUNC] == PERFIL_GERENTE;
$can_see_value 	= $isAdmin || $isDiretor;
?>
<form action="?op=add_central_estoque" method="post" id="form-cad-central-estoque"
      onsubmit="return checkSubmit();">
    <div class="tool-bar-form" form="form-cad-central-estoque">
        <div onclick="openAddSpaceForm(this)" id='add-btn-tool' class="tool-button add-btn-tool-box"> Adicionar </div>
        <div onclick="closeAddSpaceForm(this)" class="tool-button cancel-btn-tool-box"> Cancelar </div>
    </div>
    <div class="hidden add-space-this-form">
    <fieldset>    
        <legend>&nbsp;Movimentações no Estoque&nbsp;</legend>
        <input type="hidden" name="for-update-id" id="for-update-id" value=""/>
        <label> Origem:
            <select name="origem" class="input select-input gray-grad-back" 
                    id="origem-central" required onchange="onChangeOrigem()">	
                <option value=""> Selecione uma Origem </option>
                <?php
                include_once CONTROLLERS."loja.php";
                $loja_controller    = new LojaController();
                $all_lojas          = $loja_controller->getAllLojas();
                $lojas              = array();
                if ($isAdmin || $isDiretor) 
                {
                    echo "<option value='null'>FORNECEDOR</option>";
                    $lojas = $all_lojas;
                } else if($isGerente){
                    $lojas = array(
                        $loja_controller->getLoja('1'), //Central de Estoque
                        $loja_controller->getLoja($_SESSION[SESSION_LOJA_FUNC])
                    );
                }
                foreach($lojas as $loja){ ?>
                    <option value="<?php echo $loja->id; ?>" ><?php echo $loja->sigla;  ?></option>
                <?php } ?>
            </select>
        </label>
        <span class="h-separator"> &nbsp; </span>
        <label> Destino:
            <select name="destino" class="input select-input gray-grad-back" 
                    id="destino-central" required onchange="$('#produtos-space').html('');">	
                <option value=""> Selecione um Destino </option>	
                <?php
                foreach($all_lojas as $loja){ ?>
                    <option value="<?php echo $loja->id; ?>"><?php echo $loja->sigla;  ?></option>
                <?php } ?>
            </select>
        </label>
        <span class="h-separator"> &nbsp; </span>
        <label>Data: <input type="date" name="data" class="input text-input with-default" 
                            dvalue="<?php echo date("Y-m-d");?>" required id="data-central"></label>
        <span class="h-separator"> &nbsp; </span>
        <label> Observação:
            <textarea class="input text-input" name="observacao" id="observacao-central" rows="2"></textarea>
        </label>
        <p>&nbsp;</p>
        <div class="separted-info" id="box-produtos">
            <fieldset >
                <legend>Produtos
                    &nbsp;
                    <a  href="javascript:;" title="Buscar por produtos"
                        onclick="onClickSearchProduto();">
                        <img src="<?php echo GRID_ICONS."visualizar_add.png"; ?>" width="16px"/></a>
                    &nbsp;
                </legend>
                <div id="produtos-space"></div>
                <div id="status-space">
                    <label>Total de Produtos: <span id="status-qtd"></span></label>
                    <span class="h-separator"> &nbsp; </span>
                    <?php if($can_see_value){ ?>
                        <label>Total em Valor: <span id="status-valor"></span></label>
                    <?php } ?>
                </div>
            </fieldset>
        </div>
        <p style="text-align: right" class="v-separator">
            <input type="submit" class="btn submit green3-grad-back" name="submit" value="Cadastrar"/>
        </p>
    </fieldset>
    </div>
</form>
<!-- FLOOAT DIV FOR PRODUCT -->
<div class="hidden parent-to-hide float-input" id="search-produto"> 
    <p style="text-align: center;" class="parent-to-hide"> 
        <input type="text" class="input text-input big-input" id="search-produto-field"
               onkeyup="searchProdutos(this.value)" placeholder="Descrição ou Código" autocomplete="off"/> 
    </p>
    <div id="content-search"> </div>
</div>
<!-- FLOOAT DIV FOR PRODUCT -->
<script src="script/mask.js"></script>
<script src="script/jquery.maskMoney.js"></script>
<style>
.separted-info{
    background: #eee;
    padding: 5px;
    border-radius: 4px;
}
.btn-link{
    text-decoration: none;
    font-size: 10pt;
    color: rgb(30, 150, 189);
    font-weight: bolder;
}
.btn-link:hover {
    text-shadow: 0 0 2px #AAA;
}
.btn-link:active {
    color: blue;
}
.btn-link img {
    width: 16px;
    height: 16px;
}
#box-produtos{
    display: inline-block;
}
#box-produtos fieldset {
    display: inline-block;
}
.produto-row {
    margin-bottom: 10px;
}
.result-search-produto {
    border-bottom:lightgray solid 1px;
    color:gray;
    font-size:10pt;
    margin-top:5px;
    padding:5px; 
    cursor: pointer;
}
.result-search-produto:hover{ background: #eee; }
#search-produto{z-index: 100;}
</style>
<script>
var moneyConfig = { thousands:'', decimal:',', allowZero: true, prefix: 'R$ ', affixesStay: false};
function checkSubmit(){
    if(!confirm("Deseja realmente prosseguir com o cadastro/alteração no estoque? ")){
        return false;
    }
    if($("#origem-central").val() == "null" && $("#destino-central").val() != '1'){
        badAlert("Destino Inválido (deve ser a Central)");
        return false;
    }
	if( $("#for-update-id").val() == "" && 
            $("#origem-central").val() != "null" && $("#origem-central").val() != "1" &&
            $("#origem-central").val() != "<?php echo $_SESSION[SESSION_LOJA_FUNC];?>")
        {
            badAlert("Origem Inválida (sem permissão para manipular a central)");
            return false;
	}
    var produtos = document.getElementsByClassName('produto-row');
    if(produtos.length == 0){
        badAlert("Sem Produtos");
        return false;
    }
    var hasInvalid = false;
    var hasEmpty = false;
    var hasOne = false;
    for(var i = 0, l = produtos.length; i < l; i++){
        var inputCod = $(produtos[i]).find('.cod').get(0);
        if(inputCod.className.indexOf("invalid-input") != -1) {
            hasInvalid = true;
            continue;
        }
        var qtd = $(produtos[i]).find('.qtd').get(0).value;
        var val = $(produtos[i]).find('.val').get(0).value;
        if(qtd.length == 0 || val.length == 0) { 
            hasEmpty = true;
            continue;
        }
        hasOne = true;
    }
    if(!hasOne){
        badAlert("Sem produto");
        return false;
    }
    var radicalText = false;
    if(hasEmpty && hasInvalid){ radicalText = "inválidos e vazios"; }
    else if(hasEmpty){ radicalText = "vazios"; }
    else if(hasInvalid){ radicalText = "inválidos"; }
    if(radicalText && !confirm("Existem produtos "+radicalText+", deseja continuar?")){
        return false;
    }
    return true;
}
function addProduto(produto, noRemove) {
    var divProduto = document.createElement("div");
    divProduto.className = "produto-row";
    
    var inputCodigo = document.createElement("input");
    inputCodigo.className = "input text-input cod";
    inputCodigo.type = "text";
    inputCodigo.onkeypress = function(){
        mascaraInteiro()
    };
    inputCodigo.name = "p-codigo[]";
    
    var inputDesc = document.createElement('span');
    
    
    var inputQuantidade = document.createElement("input");
    inputQuantidade.className = "input text-input qtd";
    inputQuantidade.type = "number";
    inputQuantidade.name = "p-quantidade[]";
    inputQuantidade.min = "0";
    inputQuantidade.onblur = function() {
        calcStatus();
    }
   
    <?php if($can_see_value){?>
    var inputValor = document.createElement("input");
    inputValor.className = "input text-input val";
    inputValor.type = "text";
    inputValor.onkeypress = function(){
        mascaraInteiro()
    };
    inputValor.onblur = function(){ 
        calcStatus();
    }
    inputValor.name = "p-valor[]";
    if($("#origem-central").val() != "null") {
        inputValor.disabled = true;
    }
    $(inputValor).maskMoney(moneyConfig);
    <?php } ?>
    
    inputCodigo.onblur = function() {
        if(inputCodigo.value.length == 0){
            if(inputCodigo.className.indexOf("invalid") != -1){
                $(inputCodigo).removeClass("invalid-input");
            }
            return;
        }
        checaProduto(inputCodigo, inputDesc <?php if($can_see_value){echo ", inputValor"; }?>, inputQuantidade);
    }
    
    divProduto.appendChild(labelOf("Código: ", inputCodigo));
    divProduto.appendChild(hSeparator());
    divProduto.appendChild(labelOf("Desc: ", inputDesc));
    divProduto.appendChild(hSeparator());
    divProduto.appendChild(labelOf("Qtd. na Entrada: ", inputQuantidade));
    divProduto.appendChild(hSeparator());
    if(produto != undefined && produto.quantidadeSaida != 0){
        var inputLbQtdSaida = document.createElement("span");
        inputLbQtdSaida.innerHTML = produto.quantidadeSaida;
        inputLbQtdSaida.title = "Quantos chegram no destino";
        divProduto.appendChild(labelOf("Qtd. na Saída: ", inputLbQtdSaida));
        divProduto.appendChild(hSeparator());
    }
    <?php if($can_see_value){ ?>
    divProduto.appendChild(labelOf("Valor Uni.: ", inputValor));
    divProduto.appendChild(hSeparator());
    <?php } ?>
    if(!noRemove){
        divProduto.appendChild(autoRemove());
    }
    
    if(produto != undefined){ 
        inputCodigo.value = produto.codigo;
        inputQuantidade.value = produto.quantidadeEntrada;
        inputDesc.innerHTML = produto.descricao;
        <?php if($can_see_value){ ?>
        inputValor.value = produto.valor;
        <?php } ?>
    }
    
    document.getElementById("produtos-space").appendChild(divProduto);
    
    return divProduto;
}
function labelOf(text, field){
    var label = document.createElement("label");
    label.innerHTML = text;
    label.appendChild(field);
    return label;
}
function autoRemove(){
    var btn = document.createElement("a");
    btn.href = "javascript:;";
    btn.innerHTML = "<img src='images/tool-icons/del.png'/>";
    btn.onclick = function(){
        $(btn.parentNode).remove();
    }
    return btn;
}
function hSeparator(){
    var span = document.createElement("span");
    span.innerHTML = "&nbsp;";
    span.className = "h-separator";
    return span;
}
function checaProduto(input , tagDesc <?php if($can_see_value){ echo ", tagValue"; }?>, tagQuantidade){
    var origem = $('#origem-central').val();
    if(!origem) return;
    if(origem == "null"){
        var url = 'ajax.php?code=7781&bc=1&prod=' + input.value;
        get(url, function(data){
            if(data.code == '0'){
                tagQuantidade.max = "";
                tagDesc.innerHTML = data.data.descricao;
                <?php if($can_see_value){ ?>
                if(data.data.precoCompra != undefined) {
                    tagValue.value = data.data.precoCompra;
                } else {
                    tagValue.value = data.data.precoVendaMin
                }
                <?php } ?>
                $(input).removeClass('invalid-input');
            } else { 
                $(input).addClass('invalid-input');
                badAlert(code.message);
            }
            calcStatus();
        });
    } else {
        var url = 'ajax.php?code=7781&bc=1&prod=' + input.value + '&loja=' + origem;
        get(url, function(data){
            if(data.code == '0'){
                var isDev = $("#origem-central").val() == $("#destino-central").val() && 
                            $("#origem-central").val() != '1';
                if(data.data.quantidade > 0 || isDev){
                    tagQuantidade.max = isDev ? "" : data.data.quantidade;
                    tagDesc.innerHTML = data.data.descricao;
                    <?php if($can_see_value){ ?>
                    tagValue.value = data.data.valor;
                    <?php } ?>
                    $(input).removeClass('invalid-input');
                } else { 
                    $(input).addClass('invalid-input');
                    badAlert("Produto não está em estoque dessa origem");
                }
            } else {
                alert(data.message);
                $(input).addClass('invalid-input');
            }
            calcStatus();
        });
    }
}
function calcStatus() {
    var resQtd = 0, resVal = 0;
    var produtos = document.getElementsByClassName('produto-row');
    for(var i = 0, l = produtos.length; i < l; i++){
        var inputCod = $(produtos[i]).find('.cod').get(0);
        if(inputCod.className.indexOf("invalid-input") == -1) { 
            var qtd = $(produtos[i]).find('.qtd').get(0).value;
            if(qtd.length == 0) qtd = '0';
            qtd = parseInt(qtd);
            
            resQtd += qtd;
            <?php if($can_see_value) { ?>
            var val = $(produtos[i]).find('.val').get(0).value;
            if(val.length == 0) val = '0';
            val = parseFloat(val.replace('R$', '').replace(",","."));
            resVal += (qtd * val);
            <?php } ?>
        }
    }
    $("#status-qtd").html(resQtd);
    <?php if($can_see_value) { ?>
    $("#status-valor").html("R$ " + floorMoney(resVal).replace(".", ","));
    <?php } ?>
}
function openEditCentralEstoqueMode(idCentral){
    if(!idCentral) { return; }
    var url = "ajax.php?code=7500&central="+idCentral;
    get(url, function(data){
        if(data.code == '0'){
            var central = data.data;
            $("#for-update-id").val(central.id);
            $("#data-central").val(central.data);
            $("#origem-central").val(central.lojaOrigem);
            $("#destino-central").val(central.lojaDestino);
            $("#observacao-central").val(central.observacao);
            $("#produtos-space").html("");
            
            var noRemove = central.status == 2;
            
            for(var i = 0, l = central.produtos.length; i < l; i++){
                addProduto(central.produtos[i], noRemove);
            }
            
            calcStatus();
            
            openAddSpaceForm(document.getElementById("add-btn-tool"), true);
            
       } else badAlert(data.message);
    });
}
function openAproveMode(id_central){
    openViewDataMode('ajax.php?code=5580&central='+id_central);
}
function onChangeOrigem(){
    if($("#origem-central").val() == "null"){
        $("#destino-central").val('1');
        document.getElementById("destino-central").disabled = true;
    } else {
        document.getElementById("destino-central").disabled = false;
    }
    $("#produtos-space").html("");
    calcStatus();
    loadEstoque($("#origem-central").val());
}
//=================================
//==FUNÇÕES DE PROCURA DE PRODUTO==
//=================================
var produtos = new Array();
function onClickSearchProduto(){
    floatElement('search-produto'); 
    $('#content-search').html('');
    document.getElementById('search-produto-field').focus();
    if(!produtos.length){ 
        loadEstoque($('#origem-central').val()); 
    }
}
function loadEstoque(idLoja){
    produtos = new Array();
    if(idLoja == "") return;
    var url = "ajax.php?code=1102&loja="+idLoja;
    get(url, function(data){
        if(data.code == "0"){
            produtos = data.data;
        } else badAlert("Falha ao carregar estoque da loja: " + data.message);
    });
}
function searchProdutos(txt){
    $("#content-search").html("");
    if(txt == "") return;
    txt = txt.toLowerCase();
    for(var i = 0; i < produtos.length; i++){
        var qtd  = produtos[i].quantidade;
        if(qtd != 'infinity' && qtd <= 0) continue;
        var desc = produtos[i].descricao+"";
        var code = produtos[i].codigo+"";
        if(desc.toLowerCase().indexOf(txt) != -1 || 
           code.toLowerCase().indexOf(txt) != -1 ){
            var prod = "<p class='result-search-produto' title='Adicionar este produto' onclick='selectProdutoOfSearch("+i+")'>";
            prod += code + ": " + desc;
            prod += "</p>";
            $("#content-search").append(prod);
        }        
    }
    if(!$("#content-search").html().length){
        $("#content-search").append("<p class='result-search-produto'>Sem Resultados</p>");
    }
}
function selectProdutoOfSearch(idx){
    var divProduto = addProduto();
    var inpuCodigo  = divProduto.childNodes[0].childNodes[1];
    console.log(inpuCodigo);
    inpuCodigo.value = produtos[idx].codigo;
    $(inpuCodigo).blur();
}
</script>
